% TP 4, EJ 2

% INCOMPLETO

:- consult('../lib.pl').

mujer(ana).
mujer(maria).
mujer(marta).

varon(juan).
varon(luis).
varon(pedro).

prefiere( ana, [luis,juan,pedro] ).
prefiere( nora, [juan,pedro,luis] ).
prefiere( marta, [pedro,luis,juan] ).
prefiere( luis, [ana,nora,marta] ).
prefiere( juan, [marta,ana,nora] ).
prefiere( pedro, [nora,marta,ana] ).

cuerno( Pers, Cony, Amante ) :-
	prefiere( Pers, Lista ),
	antes( Lista, Amante, Cony )/*,
	prefiere( Amante, Lista2 ),
	antes( Lista2, Pers, Cony )*/.
	
antes( [A|_], A, _ ) :- !.
antes( [B|_], _, B ) :- !, fail.
antes( [_|R], A, B ) :- antes( R, A, B ).

estable( [] ).
estable( [pareja(Hombre,Mujer)|R] ) :- estable(Hombre,Mujer), estable(R).

estable( Hombre, Mujer ) :- 
	varon(Hombre), mujer(Mujer),
	not(inestable(Hombre,Mujer)).

inestable( A, B ) :- 
	varon(C), C \= A,
	cuerno( B, A, C ), !.

inestable( A, B ) :-
	mujer(C), C \= B,
	cuerno( A, B, C ).